<?php

// Wenn der Benutzer angemeldet ist, dann kann er sich nicht registrieren
if (getUserID()) {
	return ERR_NO_REGISTRATION_LOGGED_IN;
}

// Returndaten vorbereiten
$ret = array();
$ret['filename']   = 'register.tpl';
$ret['stylesheet'] = 'register.css';
$ret['data']	   = array();

// Wurden Daten via POST gesendet?
if ('POST' == $_SERVER['REQUEST_METHOD']) {
	
	// Formular und eingaben prüfen
	{
		// Hat das Formular eine valide Form
		if (!isset($_POST['username'], $_POST['password'], $_POST['email'], $_POST['answer'], $_POST['formaction'])) {
			return ERR_FORM_INVALID;
		}
		
		// Gab es zwei PW Felder
		if (!is_array($_POST['password']) or count($_POST['password']) != 2) {
			return ERR_FORM_INVALID;
		}
		
		// Wurde alles eingetragen?
		if (('' == trim($username = $_POST['username'])) or
			('' == trim($password = $_POST['password'][0])) or
			('' == trim($email = $_POST['email'])) or 
			('' == trim($answer = $_POST['answer']))) {
			return ERR_FORM_FIELD_NOT_SET;	
		}
		
		// pseudo-CAPTCHA prüfen
		if ('captcha' != $answer) {
			return ERR_CAPTCHA_WRONG;
		}
		
		// Benutzername valid 
		if(!preg_match('~\A\S{3,30}\z~', $username)) {
			return ERR_USERNAME_LIMITATIONS;
		}
		
		// Passwörter gleich
		if ($password != $_POST['password'][1]) {
			return ERR_PASSWORDS_DO_NO_EQUAL;
		}
	}
	
	// Den User anlegen
	{
		// Die Userinformationen in ein User Objekt packen
		$user = new User($username, $email);
		$user->set_password($password);
		
		// Den User Speichern
		$UserDAO = DAOFactory::getInstance('User');
		if (!$UserDAO->save($user)) {
			// Fehler zurückgeben
			return $UserDAO->get_error();
		}
		
		// Das User Objekt sicherheitshalber wieder freigeben
		unset($user);
		
		// UserDAO sicherheitshalber unsetten
		unset($UserDAO);
	}

	return INFO_YOU_ARE_NOW_REGISTERED;
}

return $ret;
?>